#ifndef CARMAINWINDOW_H
#define CARMAINWINDOW_H

#include <QMainWindow>
#include "licenseplaterecognizer.h"
#include "framelesswidget.h"

#include <QTime> //时间
#include <QTimer> //定时器
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QTcpSocket>
#include <QImage>
#include <QTableWidget>

// 前向声明 ParkingManager
class ParkingManager;

namespace Ui {
class CarMainWindow;
}

class CarMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit CarMainWindow(QWidget *parent = nullptr);
    ~CarMainWindow();
    QString  identifyCarid();
    QTcpSocket *m_tcpSocket;

private slots:
    void on_btn_start_clicked();    // 车辆进场
    void on_btn_stop_clicked();     // 车辆离场
    void on_btn_start_2_clicked();  // 发送拍照命令
    void on_btn_stop_2_clicked();   // 会员结账
    void processCheckout(bool isVip);// 处理结账逻辑（普通/VIP）

    void onVipHeaderClicked(int logicalIndex);//排序
    void onCurrentHeaderClicked(int logicalIndex);
    void onRecordHeaderClicked(int logicalIndex);
    void on_setbtn_clicked();       // 后台界面

public slots:
    void onConnected();             //接收数据
    void onRecvDataSlot();          //接收服务器图片并显示
    QString formatDuration(int seconds);// 将秒数转换为易读的时长字符串
    double calculateFee(int seconds, bool isVip);// 计算停车费用

signals:
    void imageReceived();           // 图片接收完成信号

private:
    Ui::CarMainWindow *ui;
    QTime tm;
    QTimer m_timer;
    QByteArray imgeData;                  // 用于TCP图片接收
    LicensePlateRecognizer *m_recognizer; // 车牌识别器
    QImage m_currentImage;                // 当前图片
    bool m_waitingForImage;               // 标记是否在等待图片
    bool waitForImageReceival();          // 等待图片函数
    ParkingManager *parkingManager;       // 添加车位管理界面指针

    // 通用表格数据加载函数
    void loadTableData(QTableWidget* table, const QString& tableName,
                      int sortColumn = 1, Qt::SortOrder sortOrder = Qt::DescendingOrder);

    bool isParkingFull();// 检查车位状态
};

#endif // CARMAINWINDOW_H
